// pages/addressEdit/addressEdit.js
const {
  editAddress,
  addAddress,
} = require('../../api/url.js')

const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    region: ['省份', '城市', '区县'],
    user: {}, //用户信息
    name: '', //姓名
    phone: '', //电话号码
    detail: '', //地址详情
    isDefault: false, //用于判断地址的默认状态,如果是添加地址且已经有地址的情况下显示非默认状态，如果是添加地址且添加的是第一条就设置为默认状态（将在下面的js处理），如果是编辑地址将会根据地址的状态来显示
    ifShowSetDefault: true, //用于判断是否显示默认选项，如果是添加地址且是第一条或者是编辑地址第一条则不用显示此选项，因为添加的第一条地址将设置为默认地址，如果是编辑地址且只有一条的话，这条就是默认地址，不能让他将此条信息改为非默认，所以不显示此选项，值由下面的addressCount决定
    enableSelect: '' //是否是从确认订单过来的 是为true 否为false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    this.setData({
      user: app.globalData.userInfo,
      enableSelect: options.enableSelect
    })
    var addressCount //用于记录地址数量，根据数来判断是否显示设置默认地址选项
    if (options.length) {
      addressCount = options.length
    }
    if (options.id) { //存在地址id 证明是编辑打开的页面， 否则是点击添加的页面
      const {
        id,
        name,
        phone,
        region,
        detail,
        isDefault
      } = options
      this.setData({
        addressId: id
      })
      wx.setNavigationBarTitle({ //将页面标题改为编辑收货地址
        title: '编辑收货地址',
      })
      this.setData({
        name,
        phone,
        detail,
        isDefault: !!isDefault,
        region: region.split('  '),
      })
      if (addressCount == 1) { //如果是编辑并且只有一条地址数据，则不显示设置默认地址选项
        this.setData({
          ifShowSetDefault: false,
        })
      } else {
        this.setData({
          ifShowSetDefault: true,
        })
      }
      if (options.isDefault == 0) { //fIsDefault  必须 (int)  是否设为默认 0 代表默认 1 代表非默认
        this.setData({
          isDefault: true,
          ifShowSetDefault: false //如果是编辑且编辑的值默认地址将不显示设置默认地址选项，
        })
      } else {
        this.setData({
          isDefault: false
        })
      }
    } else {
      wx.setNavigationBarTitle({ //将页面标题改为编辑收货地址
        title: '添加收货地址',
      })
      if (addressCount == 0) { //如果地址数量为0则不显示设置默认地址选项，直接将其设置为默认地址
        this.setData({
          ifShowSetDefault: false,
          isDefault: true
        })
      }
    }
  },

  bindRegionChange: function(e) {
    this.setData({
      region: e.detail.value
    })
  },
  inputName(e) {
    this.setData({
      name: e.detail.value
    })
  },
  inputPhone(e) {
    this.setData({
      phone: e.detail.value
    })
  },
  inputDetailAddress(e) {
    this.setData({
      detail: e.detail.value
    })
  },
  isDefaultChange(e) {
    this.setData({
      isDefault: e.detail.value
    })
  },
  checkName() {
    const {
      name
    } = this.data
    if (!name || name == '') {
      wx.showToast({
        title: '收货人不能为空',
        icon: 'none',
        duration: 2000
      })
    } else if (name && name.length < 2) {
      wx.showToast({
        title: '收货人姓名不能少于两个字',
        icon: 'none',
        duration: 2000
      })
    }
  },
  checkPhone() {
    const {
      phone
    } = this.data
    if (!phone || phone == '') {
      wx.showToast({
        title: '手机号码不能为空',
        icon: 'none',
        duration: 2000
      })
    } else if (phone && !/^((\+86)|(86))?1[34578][0-9]\d{8}$/.test(phone)) {
      wx.showToast({
        title: '手机号码格式不对',
        icon: 'none',
        duration: 2000
      })
    }
  },
  checkDetailAddress() {
    const {
      detail
    } = this.data
    if (!detail || detail == '') {
      wx.showToast({
        title: '详细地址不能为空',
        icon: 'none',
        duration: 2000
      })
    }
  },
  tapSave: function() {
    var self = this
    const {
      name,
      phone,
      region,
      detail,
      isDefault,
      addressId,
      user,
      enableSelect
    } = this.data

    if (!name || name == '') {
      wx.showToast({
        title: '收货人姓名不能为空',
        icon: 'none',
        duration: 2000
      })
    } else if (name && name.length < 2) {
      wx.showToast({
        title: '收货人姓名不能少于两个字',
        icon: 'none',
        duration: 2000
      })
    } else if (!phone || phone == '') {
      wx.showToast({
        title: '手机号码不能为空',
        icon: 'none',
        duration: 2000
      })
    } else if (phone && !/^((\+86)|(86))?1[34578][0-9]\d{8}$/.test(phone)) {
      wx.showToast({
        title: '手机号码格式不对',
        icon: 'none',
        duration: 2000
      })
    } else if (!region || region[0] == '省份') {
      wx.showToast({
        title: '请选择收货地址',
        icon: 'none',
        duration: 2000
      })
    } else if (!detail || detail == '') {
      wx.showToast({
        title: '请填写收货详细地址',
        icon: 'none',
        duration: 2000
      })
    } else {
      const addrData = app.addrToCode(region)
      const data = {
        fConsignee: name,
        fPhone: phone,
        fDetailInfo: detail,
        fProvinceNum: addrData.provinceNum,
        fCityNum: addrData.cityNum || '',
        fAreaNum: addrData.areaNum || '',
        fIsDefault: isDefault ? 0 : 1,
        loginName: user.loginname,
        fUserId: user.id,
        token: wx.getStorageSync('token')
      }
      var url
      if (addressId) {
        data.fId = addressId
        url = editAddress
      } else {
        url = addAddress
      }
      wx.showLoading({
        title: '保存中',
      })
      wx.request({
        url: url,
        data: data,
        success: function(res) {
          wx.hideLoading()
          if (res.data.code == 403) {
            wx.showToast({
              icon: 'none',
              title: res.data.msg,
              duration: 2000
            })
          } else if (res.data.code == 1) {
            wx.showToast({
              icon: 'none',
              title: res.data.msg,
              duration: 2000
            })
          } else if (res.data.code == 0) {
            if (enableSelect == 1) { //如果是从订单过来的就在保存成功的时候让确认订单重新读取数据
              const pages = getCurrentPages()
              const prevPage = pages[pages.length - 3]
              prevPage.loadAddress()
            }
            wx.showToast({
              title: res.data.msg,
              icon: 'success',
              duration: 2000
            })
            setTimeout(function() {
              self.notifyReloadAddress()
              wx.navigateBack()
            }, 2000)
          }
        }
      })
    }
  },

  notifyReloadAddress() {
    const pages = getCurrentPages()
    const prevPage = pages[pages.length - 2]
    prevPage.loadAddress()
  },


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {
    wx.stopPullDownRefresh()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})